/**
 * 实际上 element-ui 会把所有组件打包生成一份 CSS 和 JS。
 * ------------------------------------------------------
 * 使用 babel-plugin-component 这个 webpack 插件，
 * 把 import { Button } from 'element-ui' 转换成：
 * var button = require('element-ui/lib/button')
 * require('element-ui/lib/theme-chalk/button.css')。
 * ------------------------------------------------------
 * 如果产生了组件依赖并且同时按需引入的时候，代码会出现冗余问题
 * element-ui 部分解决了该问题，通过 webpack 配置文件中配置了
 * externals（在 build/config.js中）。
 *
 * css 冗余未解决，参考“后编译”解决该问题：https://juejin.cn/post/6844903502586593288
 */
import Vue from 'vue'
import {
  Button, Form, FormItem, Input, Message, Container, Header, Aside, Main,
  Menu, Submenu, MenuItemGroup, MenuItem, Breadcrumb, BreadcrumbItem, Card,
  Row, Col, Table, TableColumn, Switch, Tooltip, Pagination, Dialog, MessageBox,
  Tag, Tree, Select, Option, Cascader, Alert, Tabs, TabPane, Steps, Step,
  CheckboxGroup, Checkbox, Upload, Timeline, TimelineItem
} from 'element-ui'

Vue.use(Button)
Vue.use(Form)
Vue.use(FormItem)
Vue.use(Input)
Vue.use(Container)
Vue.use(Header)
Vue.use(Aside)
Vue.use(Main)
Vue.use(Menu)
Vue.use(Submenu)
Vue.use(MenuItemGroup)
Vue.use(MenuItem)
Vue.use(Breadcrumb)
Vue.use(BreadcrumbItem)
Vue.use(Card)
Vue.use(Row)
Vue.use(Col)
Vue.use(Table)
Vue.use(TableColumn)
Vue.use(Switch)
Vue.use(Tooltip)
Vue.use(Pagination)
Vue.use(Dialog)
Vue.use(Tag)
Vue.use(Tree)
Vue.use(Select)
Vue.use(Option)
Vue.use(Cascader)
Vue.use(Alert)
Vue.use(Tabs)
Vue.use(TabPane)
Vue.use(Steps)
Vue.use(Step)
Vue.use(CheckboxGroup)
Vue.use(Checkbox)
Vue.use(Upload)
Vue.use(Timeline)
Vue.use(TimelineItem)

// 全局挂载
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm
